package com.bwie.coupon.service;

import com.bwie.common.doamin.dto.AddCouponDTO;
import com.bwie.common.doamin.dto.CouponLIstDTO;
import com.bwie.common.doamin.vo.CouponCategoryVO;
import com.bwie.common.doamin.vo.CouponListVO;
import com.bwie.common.doamin.vo.CouponTypeVO;
import com.bwie.common.doamin.vo.UserCouponVO;
import com.bwie.common.result.PageResult;

import java.util.List;

/**
 * @className: CouponService
 * @Description: TODO
 * @version: v1.８.0
 * @author: 刘洋朔
 * @date: 2025/9/9 13:30
 */
public interface CouponService {
    /**
     * 获取优惠券列表
     * @param couponLIstDTO
     * @return
     */
    PageResult<CouponListVO> selCouponList(CouponLIstDTO couponLIstDTO);

    /**
     * 获取优惠券类型
     * @return
     */
    List<CouponTypeVO> CouponTypeVO();

    /**
     * 获取优惠券适用类型
     * @return
     */
    List<CouponCategoryVO> CouponCategoryVO();

    /**
     * 优惠券添加
     * @param addCouponDTO
     */
    void addCoupon(AddCouponDTO addCouponDTO);

    /**
     * 优惠券删除
     * @param couponId
     */
    void delCoupon(Long couponId);

    /**
     * 用户领取优惠券
     * @param couponId
     */
    void getCoupon(Long couponId);

    /**
     * 拿到对应的优惠券
     * @param productId
     * @return
     */
    List<CouponListVO> selCouponListById(Long productId);

    /**
     * 获取用户自己优惠券列表
     * @param couponLIstDTO
     * @return
     */
    PageResult<UserCouponVO> ownCouponList(CouponLIstDTO couponLIstDTO);

    /**
     * 拿到对应的优惠券的详细信息
     * @param couponId
     * @return
     */
    CouponListVO selCouponInfo(Long couponId);
}
